Most modern operating systems (OS) support symmetric multiprocessing (SMP), a technique hiding the number of processors available for use to applications by automatically distributing the execution of processes among the available processors and executing processes using time-sharing techniques. Using such kind of operating system, a server system performance can be simply increased using several central processing units (CPU) or multi-core CPUs to increase the number of processors available for executing application processes.
However, in some cases, executing a single instance of an SMP capable operating system on a multiprocessor server system may not be the most effective method to implement a high performance server system. Indeed, many operating systems are designed as general-purpose, without a particular type of workload as a target. A result of such design policy is that high performance processing can be achieved for only a small subset of the possible workloads of the server system. A typical example is a file server implementing remote accesses to files stored on a storage system attached to the server. A multi-processor server using a general purpose operating system is likely to deliver acceptable performance in the case of best-effort accesses to small files, but may have its performance degraded if the load is changed to real-time accesses to large files such as video files.
An efficient solution to this problem is to execute on the server system several types of operating systems to efficiently handle each type of load on the server. Each operating system is assigned a subset of the available processors for processing their workload. Methods have been disclosed in the past, such as U.S. Pat. No. 6,647,508B2, presenting methods for executing several operating systems on a single multiprocessor server system. Other methods such as U.S. Pat. No. 6,931,640B2 and US2002/0087611A1 also introduces methods for dynamically reallocating physical resources, e.g. memory and CPUs, to operating systems to adjust the maximum performance achievable by applications executed on each operating system of the server.